# This code is part of Qiskit.
#
# (C) Copyright IBM 2021.
#
# This code is licensed under the Apache License, Version 2.0. You may
# obtain a copy of this license in the LICENSE.txt file in the root directory
# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.
#
# Any modifications or derivative works of this code must retain this
# copyright notice, and modified files need to carry a notice indicating
# that they have been altered from the originals.
_co2_freq_b3lyp_sparse_labels = [
    "+_0*0 -_0*0",
    "+_0*1 -_0*1",
    "+_1*0 -_1*0",
    "+_1*0 -_1*1",
    "-_1*0 +_1*1",
    "+_1*1 -_1*1",
    "+_2*0 -_2*0",
    "+_2*1 -_2*1",
    "+_3*0 -_3*0",
    "+_3*1 -_3*1",
    "+_0*0 -_0*0 +_1*0 -_1*0",
    "+_0*1 -_0*1 +_1*0 -_1*0",
    "+_0*0 -_0*0 +_1*0 -_1*1",
    "+_0*1 -_0*1 +_1*0 -_1*1",
    "+_0*0 -_0*0 -_1*0 +_1*1",
    "+_0*1 -_0*1 -_1*0 +_1*1",
    "+_0*0 -_0*0 +_1*1 -_1*1",
    "+_0*1 -_0*1 +_1*1 -_1*1",
    "+_0*0 -_0*0 +_2*0 -_2*0",
    "+_0*1 -_0*1 +_2*0 -_2*0",
    "+_1*0 -_1*0 +_2*0 -_2*0",
    "+_1*0 -_1*1 +_2*0 -_2*0",
    "-_1*0 +_1*1 +_2*0 -_2*0",
    "+_1*1 -_1*1 +_2*0 -_2*0",
    "+_0*0 -_0*1 +_2*0 -_2*1",
    "-_0*0 +_0*1 +_2*0 -_2*1",
    "+_0*0 -_0*1 -_2*0 +_2*1",
    "-_0*0 +_0*1 -_2*0 +_2*1",
    "+_0*0 -_0*0 +_2*1 -_2*1",
    "+_0*1 -_0*1 +_2*1 -_2*1",
    "+_1*0 -_1*0 +_2*1 -_2*1",
    "+_1*0 -_1*1 +_2*1 -_2*1",
    "-_1*0 +_1*1 +_2*1 -_2*1",
    "+_1*1 -_1*1 +_2*1 -_2*1",
    "+_0*0 -_0*0 +_3*0 -_3*0",
    "+_0*1 -_0*1 +_3*0 -_3*0",
    "+_1*0 -_1*0 +_3*0 -_3*0",
    "+_1*0 -_1*1 +_3*0 -_3*0",
    "-_1*0 +_1*1 +_3*0 -_3*0",
    "+_1*1 -_1*1 +_3*0 -_3*0",
    "+_2*0 -_2*0 +_3*0 -_3*0",
    "+_2*1 -_2*1 +_3*0 -_3*0",
    "+_0*0 -_0*1 +_3*0 -_3*1",
    "-_0*0 +_0*1 +_3*0 -_3*1",
    "+_2*0 -_2*1 +_3*0 -_3*1",
    "-_2*0 +_2*1 +_3*0 -_3*1",
    "+_0*0 -_0*1 -_3*0 +_3*1",
    "-_0*0 +_0*1 -_3*0 +_3*1",
    "+_2*0 -_2*1 -_3*0 +_3*1",
    "-_2*0 +_2*1 -_3*0 +_3*1",
    "+_0*0 -_0*0 +_3*1 -_3*1",
    "+_0*1 -_0*1 +_3*1 -_3*1",
    "+_1*0 -_1*0 +_3*1 -_3*1",
    "+_1*0 -_1*1 +_3*1 -_3*1",
    "-_1*0 +_1*1 +_3*1 -_3*1",
    "+_1*1 -_1*1 +_3*1 -_3*1",
    "+_2*0 -_2*0 +_3*1 -_3*1",
    "+_2*1 -_2*1 +_3*1 -_3*1",
    "+_0*0 -_0*1 +_1*0 -_1*0 +_2*0 -_2*1",
    "-_0*0 +_0*1 +_1*0 -_1*0 +_2*0 -_2*1",
    "+_0*0 -_0*1 +_1*0 -_1*1 +_2*0 -_2*1",
    "-_0*0 +_0*1 +_1*0 -_1*1 +_2*0 -_2*1",
    "+_0*0 -_0*1 -_1*0 +_1*1 +_2*0 -_2*1",
    "-_0*0 +_0*1 -_1*0 +_1*1 +_2*0 -_2*1",
    "+_0*0 -_0*1 +_1*1 -_1*1 +_2*0 -_2*1",
    "-_0*0 +_0*1 +_1*1 -_1*1 +_2*0 -_2*1",
    "+_0*0 -_0*1 +_1*0 -_1*0 -_2*0 +_2*1",
    "-_0*0 +_0*1 +_1*0 -_1*0 -_2*0 +_2*1",
    "+_0*0 -_0*1 +_1*0 -_1*1 -_2*0 +_2*1",
    "-_0*0 +_0*1 +_1*0 -_1*1 -_2*0 +_2*1",
    "+_0*0 -_0*1 -_1*0 +_1*1 -_2*0 +_2*1",
    "-_0*0 +_0*1 -_1*0 +_1*1 -_2*0 +_2*1",
    "+_0*0 -_0*1 +_1*1 -_1*1 -_2*0 +_2*1",
    "-_0*0 +_0*1 +_1*1 -_1*1 -_2*0 +_2*1",
    "+_0*0 -_0*1 +_2*0 -_2*1 +_3*0 -_3*0",
    "-_0*0 +_0*1 +_2*0 -_2*1 +_3*0 -_3*0",
    "+_0*0 -_0*1 -_2*0 +_2*1 +_3*0 -_3*0",
    "-_0*0 +_0*1 -_2*0 +_2*1 +_3*0 -_3*0",
    "+_0*0 -_0*1 +_1*0 -_1*0 +_3*0 -_3*1",
    "-_0*0 +_0*1 +_1*0 -_1*0 +_3*0 -_3*1",
    "+_0*0 -_0*1 +_1*0 -_1*1 +_3*0 -_3*1",
    "-_0*0 +_0*1 +_1*0 -_1*1 +_3*0 -_3*1",
    "+_0*0 -_0*1 -_1*0 +_1*1 +_3*0 -_3*1",
    "-_0*0 +_0*1 -_1*0 +_1*1 +_3*0 -_3*1",
    "+_0*0 -_0*1 +_1*1 -_1*1 +_3*0 -_3*1",
    "-_0*0 +_0*1 +_1*1 -_1*1 +_3*0 -_3*1",
    "+_0*0 -_0*1 +_2*0 -_2*0 +_3*0 -_3*1",
    "-_0*0 +_0*1 +_2*0 -_2*0 +_3*0 -_3*1",
    "+_0*0 -_0*0 +_2*0 -_2*1 +_3*0 -_3*1",
    "+_0*1 -_0*1 +_2*0 -_2*1 +_3*0 -_3*1",
    "+_1*0 -_1*0 +_2*0 -_2*1 +_3*0 -_3*1",
    "+_1*0 -_1*1 +_2*0 -_2*1 +_3*0 -_3*1",
    "-_1*0 +_1*1 +_2*0 -_2*1 +_3*0 -_3*1",
    "+_1*1 -_1*1 +_2*0 -_2*1 +_3*0 -_3*1",
    "+_0*0 -_0*0 -_2*0 +_2*1 +_3*0 -_3*1",
    "+_0*1 -_0*1 -_2*0 +_2*1 +_3*0 -_3*1",
    "+_1*0 -_1*0 -_2*0 +_2*1 +_3*0 -_3*1",
    "+_1*0 -_1*1 -_2*0 +_2*1 +_3*0 -_3*1",
    "-_1*0 +_1*1 -_2*0 +_2*1 +_3*0 -_3*1",
    "+_1*1 -_1*1 -_2*0 +_2*1 +_3*0 -_3*1",
    "+_0*0 -_0*1 +_2*1 -_2*1 +_3*0 -_3*1",
    "-_0*0 +_0*1 +_2*1 -_2*1 +_3*0 -_3*1",
    "+_0*0 -_0*1 +_1*0 -_1*0 -_3*0 +_3*1",
    "-_0*0 +_0*1 +_1*0 -_1*0 -_3*0 +_3*1",
    "+_0*0 -_0*1 +_1*0 -_1*1 -_3*0 +_3*1",
    "-_0*0 +_0*1 +_1*0 -_1*1 -_3*0 +_3*1",
    "+_0*0 -_0*1 -_1*0 +_1*1 -_3*0 +_3*1",
    "-_0*0 +_0*1 -_1*0 +_1*1 -_3*0 +_3*1",
    "+_0*0 -_0*1 +_1*1 -_1*1 -_3*0 +_3*1",
    "-_0*0 +_0*1 +_1*1 -_1*1 -_3*0 +_3*1",
    "+_0*0 -_0*1 +_2*0 -_2*0 -_3*0 +_3*1",
    "-_0*0 +_0*1 +_2*0 -_2*0 -_3*0 +_3*1",
    "+_0*0 -_0*0 +_2*0 -_2*1 -_3*0 +_3*1",
    "+_0*1 -_0*1 +_2*0 -_2*1 -_3*0 +_3*1",
    "+_1*0 -_1*0 +_2*0 -_2*1 -_3*0 +_3*1",
    "+_1*0 -_1*1 +_2*0 -_2*1 -_3*0 +_3*1",
    "-_1*0 +_1*1 +_2*0 -_2*1 -_3*0 +_3*1",
    "+_1*1 -_1*1 +_2*0 -_2*1 -_3*0 +_3*1",
    "+_0*0 -_0*0 -_2*0 +_2*1 -_3*0 +_3*1",
    "+_0*1 -_0*1 -_2*0 +_2*1 -_3*0 +_3*1",
    "+_1*0 -_1*0 -_2*0 +_2*1 -_3*0 +_3*1",
    "+_1*0 -_1*1 -_2*0 +_2*1 -_3*0 +_3*1",
    "-_1*0 +_1*1 -_2*0 +_2*1 -_3*0 +_3*1",
    "+_1*1 -_1*1 -_2*0 +_2*1 -_3*0 +_3*1",
    "+_0*0 -_0*1 +_2*1 -_2*1 -_3*0 +_3*1",
    "-_0*0 +_0*1 +_2*1 -_2*1 -_3*0 +_3*1",
    "+_0*0 -_0*1 +_2*0 -_2*1 +_3*1 -_3*1",
    "-_0*0 +_0*1 +_2*0 -_2*1 +_3*1 -_3*1",
    "+_0*0 -_0*1 -_2*0 +_2*1 +_3*1 -_3*1",
    "-_0*0 +_0*1 -_2*0 +_2*1 +_3*1 -_3*1",
]

_co2_freq_b3lyp_dense_labels = [
    "NIIIIIII",
    "INIIIIII",
    "IINIIIII",
    "II+-IIII",
    "II-+IIII",
    "IIINIIII",
    "IIIINIII",
    "IIIIINII",
    "IIIIIINI",
    "IIIIIIIN",
    "NINIIIII",
    "INNIIIII",
    "NI+-IIII",
    "IN+-IIII",
    "NI-+IIII",
    "IN-+IIII",
    "NIINIIII",
    "ININIIII",
    "NIIINIII",
    "INIINIII",
    "IININIII",
    "II+-NIII",
    "II-+NIII",
    "IIINNIII",
    "+-II+-II",
    "-+II+-II",
    "+-II-+II",
    "-+II-+II",
    "NIIIINII",
    "INIIINII",
    "IINIINII",
    "II+-INII",
    "II-+INII",
    "IIININII",
    "NIIIIINI",
    "INIIIINI",
    "IINIIINI",
    "II+-IINI",
    "II-+IINI",
    "IIINIINI",
    "IIIININI",
    "IIIIINNI",
    "+-IIII+-",
    "-+IIII+-",
    "IIII+-+-",
    "IIII-++-",
    "+-IIII-+",
    "-+IIII-+",
    "IIII+--+",
    "IIII-+-+",
    "NIIIIIIN",
    "INIIIIIN",
    "IINIIIIN",
    "II+-IIIN",
    "II-+IIIN",
    "IIINIIIN",
    "IIIINIIN",
    "IIIIININ",
    "+-NI+-II",
    "-+NI+-II",
    "+-+-+-II",
    "-++-+-II",
    "+--++-II",
    "-+-++-II",
    "+-IN+-II",
    "-+IN+-II",
    "+-NI-+II",
    "-+NI-+II",
    "+-+--+II",
    "-++--+II",
    "+--+-+II",
    "-+-+-+II",
    "+-IN-+II",
    "-+IN-+II",
    "+-II+-NI",
    "-+II+-NI",
    "+-II-+NI",
    "-+II-+NI",
    "+-NIII+-",
    "-+NIII+-",
    "+-+-II+-",
    "-++-II+-",
    "+--+II+-",
    "-+-+II+-",
    "+-INII+-",
    "-+INII+-",
    "+-IINI+-",
    "-+IINI+-",
    "NIII+-+-",
    "INII+-+-",
    "IINI+-+-",
    "II+-+-+-",
    "II-++-+-",
    "IIIN+-+-",
    "NIII-++-",
    "INII-++-",
    "IINI-++-",
    "II+--++-",
    "II-+-++-",
    "IIIN-++-",
    "+-IIIN+-",
    "-+IIIN+-",
    "+-NIII-+",
    "-+NIII-+",
    "+-+-II-+",
    "-++-II-+",
    "+--+II-+",
    "-+-+II-+",
    "+-INII-+",
    "-+INII-+",
    "+-IINI-+",
    "-+IINI-+",
    "NIII+--+",
    "INII+--+",
    "IINI+--+",
    "II+-+--+",
    "II-++--+",
    "IIIN+--+",
    "NIII-+-+",
    "INII-+-+",
    "IINI-+-+",
    "II+--+-+",
    "II-+-+-+",
    "IIIN-+-+",
    "+-IIIN-+",
    "-+IIIN-+",
    "+-II+-IN",
    "-+II+-IN",
    "+-II-+IN",
    "-+II-+IN",
]

_co2_freq_b3lyp_coeffs = [
    1215.682529375,
    3656.9551768750007,
    682.5053337500001,
    -46.77167173323271,
    -46.77167173323271,
    2050.1464387500005,
    329.41209562500006,
    992.0224281250003,
    328.12046812500006,
    985.5642906250002,
    5.039653750000002,
    15.118961250000009,
    -89.0908653064951,
    -267.27259591948535,
    -89.0908653064951,
    -267.27259591948535,
    15.118961250000009,
    45.35688375000003,
    -6.3850425000000035,
    -19.15512750000001,
    -2.5657231250000008,
    21.644966371722845,
    21.644966371722845,
    -7.697169375000003,
    -2.0085637500000004,
    -2.0085637500000004,
    -2.0085637500000004,
    -2.0085637500000004,
    -19.15512750000001,
    -57.46538250000003,
    -7.697169375000004,
    64.93489911516855,
    64.93489911516855,
    -23.091508125000015,
    -4.595841875000001,
    -13.787525625000006,
    -1.683979375000001,
    6.412754934114709,
    6.412754934114709,
    -5.051938125000003,
    -0.5510218750000002,
    -1.6530656250000009,
    3.5921675000000004,
    3.5921675000000004,
    7.946551250000004,
    7.946551250000004,
    3.5921675000000004,
    3.5921675000000004,
    7.946551250000004,
    7.946551250000004,
    -13.787525625000006,
    -41.362576875000016,
    -5.051938125000002,
    19.238264802344126,
    19.238264802344126,
    -15.15581437500001,
    -1.6530656250000009,
    -4.959196875000003,
    -3.7351312500000025,
    -3.7351312500000025,
    44.01468537435675,
    44.01468537435675,
    44.01468537435675,
    44.01468537435675,
    -11.205393750000008,
    -11.205393750000008,
    -3.7351312500000025,
    -3.7351312500000025,
    44.01468537435675,
    44.01468537435675,
    44.01468537435675,
    44.01468537435675,
    -11.205393750000008,
    -11.205393750000008,
    5.333592500000003,
    5.333592500000003,
    5.333592500000003,
    5.333592500000003,
    6.680006250000005,
    6.680006250000005,
    -78.71701132125837,
    -78.71701132125837,
    -78.71701132125837,
    -78.71701132125837,
    20.040018750000016,
    20.040018750000016,
    -9.538736250000005,
    -9.538736250000005,
    -5.8219712500000025,
    -17.46591375000001,
    -2.8691487500000012,
    17.15529085952823,
    17.15529085952823,
    -8.607446250000004,
    -5.8219712500000025,
    -17.46591375000001,
    -2.8691487500000012,
    17.15529085952823,
    17.15529085952823,
    -8.607446250000004,
    -28.61620875000002,
    -28.61620875000002,
    6.680006250000005,
    6.680006250000005,
    -78.71701132125837,
    -78.71701132125837,
    -78.71701132125837,
    -78.71701132125837,
    20.040018750000016,
    20.040018750000016,
    -9.538736250000005,
    -9.538736250000005,
    -5.8219712500000025,
    -17.46591375000001,
    -2.8691487500000012,
    17.15529085952823,
    17.15529085952823,
    -8.607446250000004,
    -5.8219712500000025,
    -17.46591375000001,
    -2.8691487500000012,
    17.15529085952823,
    17.15529085952823,
    -8.607446250000004,
    -28.61620875000002,
    -28.61620875000002,
    16.000777500000012,
    16.000777500000012,
    16.000777500000012,
    16.000777500000012,
]
